package com.qiaofang.collectmanage.stub.facade;

import com.qiaofang.collectmanage.stub.request.*;
import com.qiaofang.collectmanage.stub.response.*;
import com.qiaofang.collectmanage.stub.request.ListElementRuleRequest;
import com.qiaofang.common.response.CommonResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.netflix.feign.FeignClient; 
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.qiaofang.collectmanage.stub.request.SearchElementRulePageRequest;
import com.qiaofang.collectmanage.stub.request.GetElementRuleRequest;

import javax.validation.Valid;

/**
 * @author li.yi
 * @date 2018年6月29日
 */
@FeignClient(name = "collectmanage",url="${feign.url.collectmanage}")
@RequestMapping("/elementrule")
@Api(tags = "elementrule", value = "采集元素规则接口集合")
public interface ElementRuleFacade {

	@RequestMapping(value = "/getElementRuleById", method = RequestMethod.POST)
	@ApiOperation(value = "查询对象根据id", notes = "查询对象根据id")
	@ApiImplicitParams({@ApiImplicitParam(name = "request", value = "请求参数", dataType = "GetElementRuleByIdRequest") })
	public GetElementRuleByIdResponse getElementRuleById(@RequestBody @Valid GetElementRuleByIdRequest request);


	@RequestMapping(value = "/getElementRuleByElementRule", method = RequestMethod.POST)
	@ApiOperation(value = "查询对象根据对象", notes = "查询对象根据对象")
	@ApiImplicitParams({@ApiImplicitParam(name = "request", value = "请求参数", dataType = "GetElementRuleRequest") })
	public GetElementRuleResponse getElementRule(GetElementRuleRequest request);


	@RequestMapping(value = "/saveElementRule", method = RequestMethod.POST)
	@ApiOperation(value = "保存元素规则",notes = "保存元素规则")
	@ApiImplicitParams({@ApiImplicitParam(name="request",value="请求参数",dataType = "SaveElementRuleRequest")})
	public CommonResponse saveElementRule(SaveElementRuleRequest request);

	@RequestMapping(value = "/updateElementRule", method = RequestMethod.POST)
	@ApiOperation(value = "更新元素规则", notes = "更新元素规则")
	@ApiImplicitParams({@ApiImplicitParam(name = "request", value = "请求参数", dataType = "UpdateElementRuleRequest") })
	public CommonResponse updateElementRule(UpdateElementRuleRequest request);

	@RequestMapping(value = "/removeElementRule", method = RequestMethod.POST)
	@ApiOperation(value = "删除元素规则", notes = "删除元素规则")
	@ApiImplicitParams({@ApiImplicitParam(name = "request", value = "请求参数", dataType = "RemoveElementRuleRequest") })
	public CommonResponse removeElementRule(RemoveElementRuleRequest request);

	@RequestMapping(value = "/listElementRule", method = RequestMethod.POST)
	@ApiOperation(value = "获取多个对象不包含删的", notes = "获取多个对象")
	@ApiImplicitParams({@ApiImplicitParam(name = "request", value = "请求参数", dataType = "ListElementRuleRequest") })
	public ListElementRuleResponse listElementRule(ListElementRuleRequest request);


	@RequestMapping(value = "/searchElementRulePage", method = RequestMethod.POST)
	@ApiOperation(value = "查询多个对象不包含删的分页列表", notes = "获取多个对象不包含删的分页列表")
	@ApiImplicitParams({@ApiImplicitParam(name = "request", value = "请求参数", dataType = "SearchElementRulePageRequest") })
	public SearchElementRulePageResponse searchElementRulePage(SearchElementRulePageRequest request);


	@RequestMapping(value = "/testFields", method = RequestMethod.POST)
	@ApiOperation(value = "测试多个字段", notes = "测试多个字段")
	@ApiImplicitParams({@ApiImplicitParam(name = "request", value = "请求参数", dataType = "TestFieldsByIdRequest") })
	public TestFieldsByIdResponse testFieldsById(TestFieldsByIdRequest request);

	@RequestMapping(value = "/testToolFields", method = RequestMethod.POST)
	@ApiOperation(value = "测试多个字段", notes = "测试多个字段")
	@ApiImplicitParams({@ApiImplicitParam(name = "request", value = "请求参数", dataType = "TestToolFieldsByIdRequest") })
	public TestFieldsByIdResponse testToolFieldsById(TestToolFieldsByIdRequest request);

	@RequestMapping(value = "/getFields", method = RequestMethod.POST)
	@ApiOperation(value = "获取多个可添加字段", notes = "获取多个可添加字段")
	@ApiImplicitParams({@ApiImplicitParam(name = "request", value = "请求参数", dataType = "GetFieldsRequest") })
	public GetFieldsResponse getFields(GetFieldsRequest request);


}
